package ca.qc.bdeb.jeuxdesboites.model;

import ca.qc.bdeb.jeuxdesboites.commun.Coup;
import ca.qc.bdeb.utilitaires.Direction;
import java.awt.Point;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Eric Wenaas <eric.wenaas@bdeb.qc.ca>
 */
public class PlusPetitGroupe implements AnalyseAI {

    @Override
    public ArrayList<Coup> analyserPosition(TableauJeu position) {
        ArrayList<Coup> reponse = new ArrayList<>();
        GroupesVulnerable groupes = new GroupesVulnerable(position);
        if (AIUtils.compterCasesSecuritaires(position, groupes) == 0) {
            Coup donPetitGroupe = donnerGroupeMinimum(position, groupes);
            reponse.add(donPetitGroupe);
        }
        return reponse;
    }
    
        /*
     * Donne à l'adversaire le groupe le moins payant
     */
    private Coup donnerGroupeMinimum(TableauJeu tableau,
                                     GroupesVulnerable groupes) {
        Coup reponse = null;
        List<Point> listeCible = groupes.obtenirPlusPetit();
        Point coordonneesChoisies = listeCible.get(0);
        Boite boiteChoisie = tableau.getBoite(coordonneesChoisies.x, 
                                              coordonneesChoisies.y);
        for (Direction d : Direction.values()) {
            if (! boiteChoisie.isFermeeDirection(d)) {
                reponse = new Coup(coordonneesChoisies.x, coordonneesChoisies.y,
                                   d);
                break;
            }
        }
        return reponse;
    }
}
